---
title: SAIF.Services.Printing overview
summary: High-level purpose, scope, and responsibilities for this library.
status: draft
owner: SAIF Documentation
last_reviewed: 2026-08-21
library: SAIF.Services.Printing
reference_type: embedded
---

# SAIF.Services.Printing overview

> **Documentation context:** Embedded Library Component
> **Documented via:** LegalMaintenance (LegalMaintenance/LegalMaintenance.vbproj)

`SAIF.Services.Printing` is the document output/rendering service layer for the application. It wraps the
EMC/Dell **xPression** document-composition web service (`xpresso.clsGenerate`) and the **SQL Server Reporting
Services** `ReportExecution2005` web service, adds an asynchronous MSMQ distribution channel that carries an
OnBase imaging index payload (`clsImageImport` from `SAIF.Services.Imaging.Import`), and provides a small
`Reporting` framework (`IReport` / `ReportBase` / `XDesignXDocument` / `XDesignXElement`) for building
xPression-format XML data documents and driving them through preview, print, distribute, and save flows. The
library performs no database access of its own.

## Purpose
- Provide print/preview/distribute clients for the xPression document-composition service and the SSRS
  `ReportExecution2005` reporting service
- Provide a reusable report lifecycle framework (`IReport` / `ReportBase`) that consuming libraries subclass to
  build, render, print, distribute, and save concrete reports
- Serialize xPression-aware XML data documents (`XDesignXDocument` / `XDesignXElement`) with key propagation for
  nested repeating sections ([BR-PRT-016](business-rules.md#br-prt-016-key-propagation-for-nested-repeating-sections))
- Resolve all environment-specific configuration (service endpoints, MSMQ path, imaging drop path) exclusively
  through the SAIF Environment API (`EnvironmentServiceBase`)

## Responsibilities
- `clsPrint`: xPression protocol/transport gateway — endpoint resolution, request assembly, synchronous-versus-
  queued dispatch, and MSMQ transaction lifecycle
- `clsRSPrint`: SSRS protocol gateway — report path, parameters, format/extension mapping, rendering
- `Reporting.*` (`IReport`, `ReportBase`, `XDesignXDocument`, `XDesignXElement`, `ErrorDetail`): report lifecycle
  orchestration, xPression XML document construction, and non-throwing error accumulation
- Delegating imaging-index payload construction to `SAIF.Services.Imaging.Import.clsImageImport`

## Key components
- `clsPrint`: xPression client — preview, print, and (synchronous or MSMQ-queued) distribute operations
- `clsRSPrint`: SSRS `ReportExecution2005` client — parameterised report rendering
- `IReport` / `ReportBase`: report lifecycle contract and abstract implementation (`Create` → `Render` →
  `Print`/`Distribute`/`Save`)
- `XDesignXDocument` / `XDesignXElement`: xPression-aware `XDocument`/`XElement` subclasses that serialize to the
  xPression XML dialect
- `ErrorDetail`: non-throwing error record collected by `ReportBase` during render/distribute failures

## Related documentation
- [Index](index.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Configuration](configuration.md)
- [API reference](api/index.md)

## Sources
- `SAIF.Services.Printing/clsPrint.vb`
- `SAIF.Services.Printing/clsRSPrint.vb`
- `SAIF.Services.Printing/Reporting/IReport.vb`
- `SAIF.Services.Printing/Reporting/ReportBase.vb`
- `SAIF.Services.Printing/Reporting/XDesignXDocument.vb`
- `SAIF.Services.Printing/Reporting/XDesignXElement.vb`
- SAIF.Services.Printing/clsPrint.vb
- SAIF.Services.Printing/clsRSPrint.vb
- SAIF.Services.Printing/Reporting/ReportBase.vb
- SAIF.Services.Printing/Reporting/IReport.vb
